<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
		<head>
			<!-- template designed by Marco Von Ballmoos  -->
			<title>File Source for model.php</title>
			<link rel="stylesheet" href="../media/stylesheet.css" />
											</head>
		<body>
						<h1>Source for file model.php</h1>
<p>Documentation is available at <a href="../myLiveShop/_core_model_php.html">model.php</a></p>
<div class="src-code">
<pre><ol><li><a name="a1"></a><span class="src-php">&lt;?php</span></li>
<li><a name="a2"></a><span class="src-doc">/**</span></li>
<li><a name="a3"></a><span class="src-doc"> * Модель</span></li>
<li><a name="a4"></a><span class="src-doc"> * </span></li>
<li><a name="a5"></a><span class="src-doc"> * Общий класс модели</span></li>
<li><a name="a6"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@author</span><span class="src-doc"> Anton Zavidov</span></li>
<li><a name="a7"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> myLiveShop</span></li>
<li><a name="a8"></a><span class="src-doc"> */</span></li>
<li><a name="a9"></a>&nbsp;</li>
<li><a name="a10"></a><a href="../myLiveShop/_core_functions_php.html#functionimport">import</a><span class="src-sym">(</span><span class="src-str">'core.field'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a11"></a><span class="src-doc">/**</span></li>
<li><a name="a12"></a><span class="src-doc"> * Базовый класс для работы с моделями</span></li>
<li><a name="a13"></a><span class="src-doc"> *</span></li>
<li><a name="a14"></a><span class="src-doc"> */</span></li>
<li><a name="a15"></a><span class="src-key">abstract </span><span class="src-key">class </span><a href="../myLiveShop/Model.html">Model</a> <span class="src-key">extends </span><a href="../myLiveShop/Base.html">Base</a> <span class="src-sym">{</span></li>
<li><a name="a16"></a>    </li>
<li><a name="a17"></a>    <span class="src-doc">/**</span></li>
<li><a name="a18"></a><span class="src-doc">     * Прямой тип сортировки</span></li>
<li><a name="a19"></a><span class="src-doc">     *</span></li>
<li><a name="a20"></a><span class="src-doc">     */</span></li>
<li><a name="a21"></a>    <span class="src-key">const </span><a href="../myLiveShop/Model.html#constASC">ASC</a> = <span class="src-str">'ASC'</span><span class="src-sym">;</span></li>
<li><a name="a22"></a>    <span class="src-doc">/**</span></li>
<li><a name="a23"></a><span class="src-doc">     * Обратный тип сортировки</span></li>
<li><a name="a24"></a><span class="src-doc">     *</span></li>
<li><a name="a25"></a><span class="src-doc">     */</span></li>
<li><a name="a26"></a>    <span class="src-key">const </span><a href="../myLiveShop/Model.html#constDESC">DESC</a> = <span class="src-str">'DESC'</span><span class="src-sym">;</span></li>
<li><a name="a27"></a>    <span class="src-doc">/**</span></li>
<li><a name="a28"></a><span class="src-doc">     * база данных</span></li>
<li><a name="a29"></a><span class="src-doc">     *</span></li>
<li><a name="a30"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">DB </span></li>
<li><a name="a31"></a><span class="src-doc">     */</span></li>
<li><a name="a32"></a>    <span class="src-key">protected </span><a href="../myLiveShop/Model.html#var$db">$db</a><span class="src-sym">;</span></li>
<li><a name="a33"></a>    <span class="src-doc">/**</span></li>
<li><a name="a34"></a><span class="src-doc">     * Имя таблицы</span></li>
<li><a name="a35"></a><span class="src-doc">     *</span></li>
<li><a name="a36"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">string </span></li>
<li><a name="a37"></a><span class="src-doc">     */</span></li>
<li><a name="a38"></a>    <span class="src-key">protected </span><a href="../myLiveShop/Model.html#var$name">$name</a><span class="src-sym">;</span></li>
<li><a name="a39"></a>    <span class="src-doc">/**</span></li>
<li><a name="a40"></a><span class="src-doc">     * Ключевые поля</span></li>
<li><a name="a41"></a><span class="src-doc">     *</span></li>
<li><a name="a42"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">array; </span></li>
<li><a name="a43"></a><span class="src-doc">     */</span></li>
<li><a name="a44"></a>    <span class="src-key">protected </span><a href="../myLiveShop/Model.html#var$id_field">$id_field</a><span class="src-sym">;</span></li>
<li><a name="a45"></a>    <span class="src-doc">/**</span></li>
<li><a name="a46"></a><span class="src-doc">     * Массив полей</span></li>
<li><a name="a47"></a><span class="src-doc">     *</span></li>
<li><a name="a48"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">array </span></li>
<li><a name="a49"></a><span class="src-doc">     */</span></li>
<li><a name="a50"></a>    <span class="src-key">protected </span><a href="../myLiveShop/Model.html#var$fields">$fields</a><span class="src-sym">;</span></li>
<li><a name="a51"></a>    <span class="src-doc">/**</span></li>
<li><a name="a52"></a><span class="src-doc">     * Констуктор</span></li>
<li><a name="a53"></a><span class="src-doc">     *</span></li>
<li><a name="a54"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$className </span><span class="src-doc">имя подели</span></li>
<li><a name="a55"></a><span class="src-doc">     */</span></li>
<li><a name="a56"></a>    <span class="src-key">public </span><span class="src-key">function </span><a href="../myLiveShop/Model.html#method__construct">__construct</a><span class="src-sym">(</span><span class="src-var">$className</span>=<span class="src-id">null</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a57"></a>        <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a>=<span class="src-id"><a href="../myLiveShop/Mysql.html">Mysql</a></span><span class="src-sym">::</span><a href="../myLiveShop/Mysql.html#methodgetInstance">getInstance</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a58"></a>        <span class="src-id">parent</span><span class="src-sym">::</span><a href="../myLiveShop/Base.html#method__construct">__construct</a><span class="src-sym">(</span><span class="src-var">$className</span>?<span class="src-var">$className</span>:__CLASS__<span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a59"></a>    <span class="src-sym">}</span></li>
<li><a name="a60"></a>    <span class="src-key">public </span><span class="src-key">function </span><a href="../myLiveShop/Model.html#methodset">set</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a61"></a>        </li>
<li><a name="a62"></a>    <span class="src-sym">}</span></li>
<li><a name="a63"></a>    <span class="src-doc">/**</span></li>
<li><a name="a64"></a><span class="src-doc">     * Загружаем данные</span></li>
<li><a name="a65"></a><span class="src-doc">     *</span></li>
<li><a name="a66"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc-var">$id </span><span class="src-doc">array / string значения ключевых полей</span></li>
<li><a name="a67"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc-var">$fieldList </span><span class="src-doc">array / string список необходимых полейб по умолчанию берутся все</span></li>
<li><a name="a68"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$params </span><span class="src-doc">дополнительные параметры для выборки join, order, group, limit, where</span></li>
<li><a name="a69"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">результат выборки</span></li>
<li><a name="a70"></a><span class="src-doc">     */</span></li>
<li><a name="a71"></a>    <span class="src-key">public </span><span class="src-key">function </span><a href="../myLiveShop/Model.html#methodload">load</a><span class="src-sym">(</span><span class="src-var">$id</span>=<span class="src-id">false</span><span class="src-sym">,</span><span class="src-var">$fieldList</span>=<span class="src-id">false</span><span class="src-sym">,</span><span class="src-var">$params</span>=<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a72"></a>        <span class="src-var">$fields</span>=<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a73"></a>        <span class="src-comm">//если $fieldList передан</span></li>
<li><a name="a74"></a>        <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$fieldList</span>!==<span class="src-id">false </span>&amp;&amp; <span class="src-var">$fieldList</span>!=<span class="src-str">&quot;*&quot;</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a75"></a>            <span class="src-comm">//превращаем в массив даже если это строка</span></li>
<li><a name="a76"></a>            <a href="../myLiveShop/_core_functions_php.html#functiontoArray">toArray</a><span class="src-sym">(</span><span class="src-var">$fieldList</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a77"></a>        <span class="src-sym">}</span><span class="src-key">else</span><span class="src-sym">{</span></li>
<li><a name="a78"></a>            <span class="src-comm">//если н передан берём список всех полей</span></li>
<li><a name="a79"></a>            <span class="src-var">$fields</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodgetField">getField</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a80"></a>        <span class="src-sym">}</span></li>
<li><a name="a81"></a>        <span class="src-comm">//если передали массив полей</span></li>
<li><a name="a82"></a>        <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/is_array">is_array</a><span class="src-sym">(</span><span class="src-var">$fieldList</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a83"></a>            <span class="src-comm">//проходимся по списку</span></li>
<li><a name="a84"></a>            <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$fieldList </span><span class="src-key">as </span><span class="src-var">$item</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a85"></a>                <span class="src-comm">//если в названии находим точку то ищем имя поля и название таблицы</span></li>
<li><a name="a86"></a>                <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><span class="src-var">$item</span><span class="src-sym">,</span><span class="src-id"><a href="../myLiveShop/_config_php.html#defineDOT">DOT</a></span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a87"></a>                    <span class="src-var">$item</span>=<a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-id"><a href="../myLiveShop/_config_php.html#defineDOT">DOT</a></span><span class="src-sym">,</span><span class="src-var">$item</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a88"></a>                    <span class="src-var">$field</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodgetField">getField</a><span class="src-sym">(</span><span class="src-var">$item</span><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]</span><span class="src-sym">,</span><span class="src-var">$item</span><span class="src-sym">[</span><span class="src-num">1</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a89"></a>                <span class="src-sym">}</span><span class="src-key">else</span><span class="src-sym">{</span></li>
<li><a name="a90"></a>                    <span class="src-var">$field</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodgetField">getField</a><span class="src-sym">(</span><span class="src-var">$item</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a91"></a>                <span class="src-sym">}</span></li>
<li><a name="a92"></a>                <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_array">is_array</a><span class="src-sym">(</span><span class="src-var">$field</span><span class="src-sym">) </span>&amp;&amp; <span class="src-var">$field</span>!==<span class="src-id">false</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a93"></a>                    <span class="src-var">$fields</span><span class="src-sym">[</span><span class="src-sym">]</span>=<span class="src-var">$field</span><span class="src-sym">;</span></li>
<li><a name="a94"></a>                <span class="src-sym">}</span></li>
<li><a name="a95"></a>            <span class="src-sym">}</span></li>
<li><a name="a96"></a>        <span class="src-sym">}</span></li>
<li><a name="a97"></a>        <span class="src-var">$where</span>=<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a98"></a>        <span class="src-comm">//собираем where запрос на основе id полей и их знчений</span></li>
<li><a name="a99"></a>        <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a100"></a>            <span class="src-key">foreach </span><span class="src-sym">(</span><a href="../myLiveShop/_core_functions_php.html#functiontoArray">toArray</a><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">) </span><span class="src-key">as </span><span class="src-var">$key</span>=&gt;<span class="src-var">$item</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a101"></a>                <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/is_string">is_string</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a><span class="src-sym">[</span><span class="src-var">$key</span><span class="src-sym">]</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a102"></a>                    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a><span class="src-sym">[</span><span class="src-var">$key</span><span class="src-sym">]</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodgetField">getField</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a><span class="src-sym">[</span><span class="src-var">$key</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a103"></a>                    <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a><span class="src-sym">[</span><span class="src-var">$key</span><span class="src-sym">]</span>===<span class="src-id">false</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a104"></a>                        <span class="src-key">new </span><span class="src-id"><a href="../myLiveShop/CoreExeption.html">CoreExeption</a></span><span class="src-sym">(</span><span class="src-str">'Не найдено ключевое поле '</span>.<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a><span class="src-sym">[</span><span class="src-var">$key</span><span class="src-sym">]</span>.<span class="src-str">', в модели '</span>.<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$name">name</a><span class="src-sym">,</span><span class="src-id">E_WARNING</span><span class="src-sym">,</span>__FILE__<span class="src-sym">,</span>__LINE__<span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a105"></a>                        <span class="src-key">return </span><span class="src-id">null</span><span class="src-sym">;</span></li>
<li><a name="a106"></a>                    <span class="src-sym">}</span></li>
<li><a name="a107"></a>                    </li>
<li><a name="a108"></a>                <span class="src-sym">}</span></li>
<li><a name="a109"></a>                <span class="src-var">$field</span>=<span class="src-sym">&amp;</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a><span class="src-sym">[</span><span class="src-var">$key</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a110"></a>                <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a><span class="src-sym">-&gt;</span><a href="../myLiveShop/DB.html#methoderaseData">eraseData</a><span class="src-sym">(</span><span class="src-var">$item</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a111"></a>                <span class="src-var">$where</span><span class="src-sym">[</span><span class="src-sym">]</span>=<span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">fieldName</span><span class="src-sym">(</span><span class="src-sym">)</span>.<span class="src-str">' = '</span>.<span class="src-var">$item</span><span class="src-sym">;</span></li>
<li><a name="a112"></a>            <span class="src-sym">}</span></li>
<li><a name="a113"></a>        <span class="src-sym">}</span></li>
<li><a name="a114"></a>        <span class="src-var">$where</span>=<a href="http://www.php.net/implode">implode</a><span class="src-sym">(</span><span class="src-str">' AND '</span><span class="src-sym">,</span><span class="src-var">$where</span><span class="src-sym">)</span>.<span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'where'</span><span class="src-sym">]</span><span class="src-sym">)</span>?<span class="src-str">' '</span>.<span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'where'</span><span class="src-sym">]</span>:<span class="src-str">''</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a115"></a>        <span class="src-comm">//строим запрос</span></li>
<li><a name="a116"></a>        <span class="src-var">$sql</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a><span class="src-sym">-&gt;</span><span class="src-id">buildQuery</span><span class="src-sym">(</span><span class="src-key">array</span><span class="src-sym">(</span></li>
<li><a name="a117"></a>            <span class="src-str">'fields'</span>=&gt;<span class="src-var">$fields</span><span class="src-sym">,</span></li>
<li><a name="a118"></a>            <span class="src-str">'table'</span>=&gt;<span class="src-str">'`'</span>.<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$name">name</a>.<span class="src-str">'`'</span><span class="src-sym">,</span></li>
<li><a name="a119"></a>            <span class="src-str">'join'</span>=&gt;isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'join'</span><span class="src-sym">]</span><span class="src-sym">)</span>?<span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'join'</span><span class="src-sym">]</span>:<span class="src-str">''</span><span class="src-sym">,</span></li>
<li><a name="a120"></a>            <span class="src-str">'order'</span>=&gt;isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'order'</span><span class="src-sym">]</span><span class="src-sym">)</span>?<span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'order'</span><span class="src-sym">]</span>:<span class="src-str">''</span><span class="src-sym">,</span></li>
<li><a name="a121"></a>            <span class="src-str">'group'</span>=&gt;isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'group'</span><span class="src-sym">]</span><span class="src-sym">)</span>?<span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'group'</span><span class="src-sym">]</span>:<span class="src-str">''</span><span class="src-sym">,</span></li>
<li><a name="a122"></a>            <span class="src-str">'limit'</span>=&gt;isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'limit'</span><span class="src-sym">]</span><span class="src-sym">)</span>?<span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'limit'</span><span class="src-sym">]</span>:<span class="src-str">''</span><span class="src-sym">,</span></li>
<li><a name="a123"></a>            <span class="src-str">'where'</span>=&gt;<span class="src-var">$where</span></li>
<li><a name="a124"></a>        <span class="src-sym">))</span><span class="src-sym">;</span></li>
<li><a name="a125"></a>        <span class="src-comm">//выполняем запрос</span></li>
<li><a name="a126"></a>        <span class="src-comm">//если передано одно поле и стоит установка возвращать одно поле то его вернут по умолчанию</span></li>
<li><a name="a127"></a>        <span class="src-key">if</span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'one_field'</span><span class="src-sym">]</span><span class="src-sym">) </span>&amp;&amp; <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'one_field'</span><span class="src-sym">] </span>&amp;&amp; <a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$fields</span><span class="src-sym">)</span>==<span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a128"></a>            <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'one_field'</span><span class="src-sym">]</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodfieldByName">fieldByName</a><span class="src-sym">(</span><span class="src-var">$fields</span><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a129"></a>        <span class="src-sym">}</span></li>
<li><a name="a130"></a>        <span class="src-var">$result</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a><span class="src-sym">-&gt;</span><a href="../myLiveShop/DB.html#methodgetArray">getArray</a><span class="src-sym">(</span><span class="src-var">$sql</span><span class="src-sym">,</span>isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'one_row'</span><span class="src-sym">]</span><span class="src-sym">)</span>?<span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'one_row'</span><span class="src-sym">]</span>:<span class="src-id">null</span><span class="src-sym">,</span>isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'one_field'</span><span class="src-sym">]</span><span class="src-sym">)</span>?<span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'one_field'</span><span class="src-sym">]</span>:<span class="src-id">null</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a131"></a>        <span class="src-key">return </span><span class="src-var">$result</span><span class="src-sym">;</span></li>
<li><a name="a132"></a>    <span class="src-sym">}</span></li>
<li><a name="a133"></a>    <span class="src-doc">/**</span></li>
<li><a name="a134"></a><span class="src-doc">     * Загружаем данные одной строкой</span></li>
<li><a name="a135"></a><span class="src-doc">     * </span></li>
<li><a name="a136"></a><span class="src-doc">     * Автоматически добавляем one_row=true и limit=1</span></li>
<li><a name="a137"></a><span class="src-doc">     *</span></li>
<li><a name="a138"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc-var">$id </span><span class="src-doc">array / string значения ключевых полей</span></li>
<li><a name="a139"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc-var">$fieldList </span><span class="src-doc">array / string список необходимых полейб по умолчанию берутся все</span></li>
<li><a name="a140"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$params </span><span class="src-doc">дополнительные параметры для выборки join, order, group, limit, where</span></li>
<li><a name="a141"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">результат выборки</span></li>
<li><a name="a142"></a><span class="src-doc">     */</span></li>
<li><a name="a143"></a>    <span class="src-key">public </span><span class="src-key">function </span><a href="../myLiveShop/Model.html#methodloadOne">loadOne</a><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">,</span><span class="src-var">$fieldList</span>=<span class="src-id">false</span><span class="src-sym">,</span><span class="src-var">$params</span>=<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a144"></a>        <span class="src-var">$paramsDeault</span>=<span class="src-key">array</span><span class="src-sym">(</span></li>
<li><a name="a145"></a>            <span class="src-str">'one_row'</span>=&gt;<span class="src-id">true</span><span class="src-sym">,</span></li>
<li><a name="a146"></a>            <span class="src-str">'limit'</span>=&gt;<span class="src-num">1</span></li>
<li><a name="a147"></a>        <span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a148"></a>        <span class="src-comm">//если не переданно более одного поля на получение ине передана звёздочка то возвращем значение как стоку из одного поля</span></li>
<li><a name="a149"></a>        <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$fieldList</span><span class="src-sym">)</span>==<span class="src-num">1 </span>&amp;&amp; <span class="src-sym">!</span>isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'one_field'</span><span class="src-sym">]</span><span class="src-sym">) </span>&amp;&amp; <span class="src-var">$fieldList</span>!==<span class="src-id">false </span>&amp;&amp; <span class="src-var">$fieldList</span>!=<span class="src-str">'*'</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a150"></a>            <span class="src-var">$paramsDeault</span><span class="src-sym">[</span><span class="src-str">'one_field'</span><span class="src-sym">]</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodfieldByName">fieldByName</a><span class="src-sym">(</span><span class="src-var">$fieldList</span><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a151"></a>        <span class="src-sym">}</span></li>
<li><a name="a152"></a>        <span class="src-var">$params</span>=<a href="http://www.php.net/array_merge">array_merge</a><span class="src-sym">(</span><span class="src-var">$paramsDeault</span><span class="src-sym">,</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a153"></a>        <span class="src-comm">//загружаем поля</span></li>
<li><a name="a154"></a>        <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodload">load</a><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">,</span><span class="src-var">$fieldList</span><span class="src-sym">,</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a155"></a>    <span class="src-sym">}</span></li>
<li><a name="a156"></a>    <span class="src-doc">/**</span></li>
<li><a name="a157"></a><span class="src-doc">     * Собираем поля для запроса в массив строк</span></li>
<li><a name="a158"></a><span class="src-doc">     *</span></li>
<li><a name="a159"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$fields </span><span class="src-doc">массив полей или строк</span></li>
<li><a name="a160"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">массив строк</span></li>
<li><a name="a161"></a><span class="src-doc">     */</span></li>
<li><a name="a162"></a>    <span class="src-key">protected </span><span class="src-key">function </span><a href="../myLiveShop/Model.html#methodgroupFields">groupFields</a><span class="src-sym">(</span><span class="src-var">$fields</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a163"></a>        <span class="src-var">$return</span>=<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a164"></a>        <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$fields </span><span class="src-key">as </span><span class="src-var">$item</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a165"></a>            <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_string">is_string</a><span class="src-sym">(</span><span class="src-var">$item</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a166"></a>                <span class="src-var">$item</span>=<span class="src-var">$item</span><span class="src-sym">-&gt;</span><span class="src-id">fieldName</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a167"></a>            <span class="src-sym">}</span></li>
<li><a name="a168"></a>            <span class="src-var">$return</span><span class="src-sym">[</span><span class="src-sym">]</span>=<span class="src-var">$item</span><span class="src-sym">;</span></li>
<li><a name="a169"></a>        <span class="src-sym">}</span></li>
<li><a name="a170"></a>        <span class="src-key">return </span><span class="src-var">$return</span><span class="src-sym">;</span></li>
<li><a name="a171"></a>    <span class="src-sym">}</span></li>
<li><a name="a172"></a>    <span class="src-doc">/**</span></li>
<li><a name="a173"></a><span class="src-doc">     * Получаем поле либо все поля таблицы</span></li>
<li><a name="a174"></a><span class="src-doc">     *</span></li>
<li><a name="a175"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$name </span><span class="src-doc">имя поля (если не указанно то вернёт все)</span></li>
<li><a name="a176"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$table </span><span class="src-doc">имя таблицы (если не указанно то возмёт имя текущей таблици)</span></li>
<li><a name="a177"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">or Field or false если поле не найденно</span></li>
<li><a name="a178"></a><span class="src-doc">     */</span></li>
<li><a name="a179"></a>    <span class="src-key">public </span><span class="src-key">function </span><a href="../myLiveShop/Model.html#methodgetField">getField</a><span class="src-sym">(</span><span class="src-var">$name</span>=<span class="src-id">false</span><span class="src-sym">,</span><span class="src-var">$table</span>=<span class="src-id">null</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a180"></a>        <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$name</span><span class="src-sym">)</span><span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$fields">fields</a><span class="src-sym">;</span></li>
<li><a name="a181"></a>        <span class="src-comm">//если таблица не передана берём её из имени</span></li>
<li><a name="a182"></a>        <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$table</span>===<span class="src-id">null</span><span class="src-sym">)</span><span class="src-var">$table</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$name">name</a>.<span class="src-id"><a href="../myLiveShop/_config_php.html#defineDOT">DOT</a></span><span class="src-sym">;</span></li>
<li><a name="a183"></a>        <span class="src-comm">//ели передана добавляем точку</span></li>
<li><a name="a184"></a>        <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$table</span><span class="src-sym">)</span><span class="src-var">$table</span>.=<span class="src-id"><a href="../myLiveShop/_config_php.html#defineDOT">DOT</a></span><span class="src-sym">;</span></li>
<li><a name="a185"></a>        <span class="src-key">else </span><span class="src-var">$table</span>=<span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a186"></a>        <span class="src-key">if</span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$fields">fields</a><span class="src-sym">[</span><span class="src-var">$table</span>.<span class="src-var">$name</span><span class="src-sym">]</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a187"></a>            <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$fields">fields</a><span class="src-sym">[</span><span class="src-var">$table</span>.<span class="src-var">$name</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a188"></a>        <span class="src-sym">}</span><span class="src-key">else</span><span class="src-sym">{</span></li>
<li><a name="a189"></a>            <span class="src-key">new </span><span class="src-id"><a href="../myLiveShop/CoreExeption.html">CoreExeption</a></span><span class="src-sym">(</span><span class="src-str">'Не удалось найти поле '</span>.<span class="src-var">$table</span>.<span class="src-var">$name</span>.<span class="src-str">', в модели '</span>.<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$name">name</a><span class="src-sym">,</span><span class="src-id">E_WARNING</span><span class="src-sym">,</span>__FILE__<span class="src-sym">,</span>__LINE__<span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a190"></a>            <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a191"></a>        <span class="src-sym">}</span></li>
<li><a name="a192"></a>    <span class="src-sym">}</span></li>
<li><a name="a193"></a>    <span class="src-doc">/**</span></li>
<li><a name="a194"></a><span class="src-doc">     * Получаем поле по его имени если поле строка</span></li>
<li><a name="a195"></a><span class="src-doc">     *</span></li>
<li><a name="a196"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc-var">$name </span><span class="src-doc">имя поля</span></li>
<li><a name="a197"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span></li>
<li><a name="a198"></a><span class="src-doc">     */</span></li>
<li><a name="a199"></a>    <span class="src-key">public </span><span class="src-key">function </span><a href="../myLiveShop/Model.html#methodfieldByName">fieldByName</a><span class="src-sym">(</span><span class="src-var">$name</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a200"></a>        <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_string">is_string</a><span class="src-sym">(</span><span class="src-var">$name</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a201"></a>            <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$name </span>instanceof <span class="src-id"><a href="../myLiveShop/Field.html">Field</a></span><span class="src-sym">)</span><span class="src-key">return </span><span class="src-var">$name</span><span class="src-sym">-&gt;</span><span class="src-id">_</span><span class="src-sym">(</span><span class="src-str">'name'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a202"></a>            <span class="src-key">new </span><span class="src-id"><a href="../myLiveShop/CoreExeption.html">CoreExeption</a></span><span class="src-sym">(</span><span class="src-str">'Попытка получить неизвестное поле в модели '</span>.<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$name">name</a><span class="src-sym">,</span><span class="src-id">E_ERROR</span><span class="src-sym">,</span>__FILE__<span class="src-sym">,</span>__LINE__<span class="src-sym">,</span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'name'</span>=&gt;<span class="src-var">$name</span><span class="src-sym">))</span><span class="src-sym">;</span></li>
<li><a name="a203"></a>            <span class="src-key">return </span><span class="src-id">null</span><span class="src-sym">;</span></li>
<li><a name="a204"></a>        <span class="src-sym">}</span></li>
<li><a name="a205"></a>        <span class="src-key">return </span><span class="src-var">$name</span><span class="src-sym">;</span></li>
<li><a name="a206"></a>    <span class="src-sym">}</span></li>
<li><a name="a207"></a>    <span class="src-doc">/**</span></li>
<li><a name="a208"></a><span class="src-doc">     * Созраняем двнные</span></li>
<li><a name="a209"></a><span class="src-doc">     *</span></li>
<li><a name="a210"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$data </span><span class="src-doc">массив данных где ключ это имя поля</span></li>
<li><a name="a211"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc-var">$id </span><span class="src-doc">число или массив указывающий на id для перезаписи</span></li>
<li><a name="a212"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$params </span><span class="src-doc">дополнительные параметры</span></li>
<li><a name="a213"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">mixed </span><span class="src-doc">true при обновлении или новый id при добавлении</span></li>
<li><a name="a214"></a><span class="src-doc">     */</span></li>
<li><a name="a215"></a>    <span class="src-key">public </span><span class="src-key">function </span><a href="../myLiveShop/Model.html#methodsave">save</a><span class="src-sym">(</span><span class="src-var">$data</span><span class="src-sym">,</span><span class="src-var">$id</span>=<span class="src-id">false</span><span class="src-sym">,</span><span class="src-var">$params</span>=<span class="src-id">false</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a216"></a>        <span class="src-var">$errors</span>=<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a217"></a>        <span class="src-var">$list</span>=<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a218"></a>        <span class="src-comm">//проходим по всемполям и записываем в них данные</span></li>
<li><a name="a219"></a>        <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodgetField">getField</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-key">as </span><span class="src-var">$name</span>=&gt;<span class="src-var">$field</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a220"></a>            <span class="src-comm">//ищем поле по имени</span></li>
<li><a name="a221"></a>            <span class="src-key">if</span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$data</span><span class="src-sym">[</span><span class="src-var">$name</span><span class="src-sym">]</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a222"></a>                <span class="src-var">$value</span>=<span class="src-var">$data</span><span class="src-sym">[</span><span class="src-var">$name</span><span class="src-sym">]</span><span class="src-sym">;                </span></li>
<li><a name="a223"></a>            <span class="src-sym">}</span><span class="src-key">elseif</span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$data</span><span class="src-sym">[</span><span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">_</span><span class="src-sym">(</span><span class="src-str">'name'</span><span class="src-sym">)</span><span class="src-sym">]</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a224"></a>                <span class="src-var">$value</span>=<span class="src-var">$data</span><span class="src-sym">[</span><span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">_</span><span class="src-sym">(</span><span class="src-str">'name'</span><span class="src-sym">)</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a225"></a>            <span class="src-sym">}</span><span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$id</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a226"></a>                <span class="src-var">$value</span>=<span class="src-id">null</span><span class="src-sym">;</span></li>
<li><a name="a227"></a>            <span class="src-sym">}</span><span class="src-key">else</span><span class="src-sym">{</span></li>
<li><a name="a228"></a>                <span class="src-comm">//если update то не добавляем лишних полей</span></li>
<li><a name="a229"></a>                <span class="src-key">continue</span><span class="src-sym">;</span></li>
<li><a name="a230"></a>            <span class="src-sym">}</span></li>
<li><a name="a231"></a>            <span class="src-comm">//если поле ещё не было установлено или значение передано для этого поля</span></li>
<li><a name="a232"></a>            <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">_</span><span class="src-sym">(</span><span class="src-str">'validated'</span><span class="src-sym">) </span>|| <span class="src-var">$value</span>!==<span class="src-id">null</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a233"></a>                <span class="src-comm">//очищаем поля пред записью</span></li>
<li><a name="a234"></a>                <span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">erase</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a235"></a>                <span class="src-comm">//устанавливаем значение поля</span></li>
<li><a name="a236"></a>                <span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">value</span><span class="src-sym">(</span><span class="src-var">$value</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a237"></a>            <span class="src-sym">}</span></li>
<li><a name="a238"></a>            <span class="src-comm">//последняя проверка перед записью</span></li>
<li><a name="a239"></a>            <span class="src-var">$result</span>=<span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">preSave</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a240"></a>            <span class="src-comm">//если проверка успешная то добавлем в массив на запись</span></li>
<li><a name="a241"></a>            <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$result</span>===<span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a242"></a>                <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">_</span><span class="src-sym">(</span><span class="src-str">'auto'</span><span class="src-sym">) </span>|| <span class="src-sym">(</span><span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">_</span><span class="src-sym">(</span><span class="src-str">'auto'</span><span class="src-sym">) </span>&amp;&amp; <span class="src-var">$value</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a243"></a>                    </li>
<li><a name="a244"></a>                    <span class="src-var">$list</span><span class="src-sym">[</span><span class="src-var">$id</span>?<span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">fieldName</span><span class="src-sym">(</span><span class="src-sym">)</span>:<span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">_</span><span class="src-sym">(</span><span class="src-str">'name'</span><span class="src-sym">)</span><span class="src-sym">]</span>=<span class="src-var">$field</span><span class="src-sym">-&gt;</span><span class="src-id">value</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a245"></a>                <span class="src-sym">}</span></li>
<li><a name="a246"></a>            <span class="src-sym">}</span><span class="src-key">else</span><span class="src-sym">{</span></li>
<li><a name="a247"></a>                <span class="src-comm">//иначе записываем ошибку</span></li>
<li><a name="a248"></a>                <span class="src-var">$errors</span><span class="src-sym">[</span><span class="src-var">$name</span><span class="src-sym">]</span>=<span class="src-var">$result</span><span class="src-sym">;</span></li>
<li><a name="a249"></a>            <span class="src-sym">}</span></li>
<li><a name="a250"></a>        <span class="src-sym">}</span></li>
<li><a name="a251"></a>        <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$errors</span><span class="src-sym">))</span><span class="src-key">return </span><span class="src-var">$errors</span><span class="src-sym">;</span></li>
<li><a name="a252"></a>        <span class="src-comm">//делаем update если есть id или какие нибудь другие условия</span></li>
<li><a name="a253"></a>        <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$where</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodcreateWhere">createWhere</a><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">,</span><span class="src-var">$params</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a254"></a>            <span class="src-comm">//если у модели находим собственный update делаем его</span></li>
<li><a name="a255"></a>            <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/method_exists">method_exists</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">,</span><span class="src-str">'update'</span><span class="src-sym">))</span><span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">update</span><span class="src-sym">(</span><span class="src-var">$list</span><span class="src-sym">,</span><span class="src-var">$where</span><span class="src-sym">,</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a256"></a>            <span class="src-comm">//иначе запускаем нативный update</span></li>
<li><a name="a257"></a>            <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a><span class="src-sym">-&gt;</span><a href="../myLiveShop/DB.html#methodupdate">update</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$name">name</a><span class="src-sym">,</span><span class="src-var">$list</span><span class="src-sym">,</span><span class="src-var">$where</span><span class="src-sym">)</span><span class="src-sym">;    </span></li>
<li><a name="a258"></a>        <span class="src-sym">}</span></li>
<li><a name="a259"></a>        <span class="src-comm">//если у модели находим собственный инсерт делаем его</span></li>
<li><a name="a260"></a>        <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/method_exists">method_exists</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">,</span><span class="src-str">'insert'</span><span class="src-sym">))</span><span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">insert</span><span class="src-sym">(</span><span class="src-var">$list</span><span class="src-sym">,</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a261"></a>        <span class="src-comm">//иначе делаем нативный insert</span></li>
<li><a name="a262"></a>        <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a><span class="src-sym">-&gt;</span><a href="../myLiveShop/DB.html#methodinsert">insert</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$name">name</a><span class="src-sym">,</span><span class="src-var">$list</span><span class="src-sym">,</span><span class="src-var">$params</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a263"></a>            <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a264"></a>        <span class="src-sym">}</span><span class="src-key">else</span><span class="src-sym">{</span></li>
<li><a name="a265"></a>            <span class="src-comm">//возвращем новый id</span></li>
<li><a name="a266"></a>            <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a><span class="src-sym">-&gt;</span><a href="../myLiveShop/DB.html#methodlastId">lastId</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a267"></a>        <span class="src-sym">}</span></li>
<li><a name="a268"></a>    <span class="src-sym">}</span></li>
<li><a name="a269"></a>    <span class="src-doc">/**</span></li>
<li><a name="a270"></a><span class="src-doc">     * Удаляем данные</span></li>
<li><a name="a271"></a><span class="src-doc">     *</span></li>
<li><a name="a272"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc-var">$id </span><span class="src-doc">число или массив указывающий на id для перезаписи</span></li>
<li><a name="a273"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$params </span><span class="src-doc">дополнительные параметры</span></li>
<li><a name="a274"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span></li>
<li><a name="a275"></a><span class="src-doc">     */</span></li>
<li><a name="a276"></a>    <span class="src-key">public </span><span class="src-key">function </span><a href="../myLiveShop/Model.html#methoddelete">delete</a><span class="src-sym">(</span><span class="src-var">$id</span>=<span class="src-id">false</span><span class="src-sym">,</span><span class="src-var">$params</span>=<span class="src-id">false</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a277"></a>        <span class="src-comm">//смотрим переданы ли условия</span></li>
<li><a name="a278"></a>        <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$where</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodcreateWhere">createWhere</a><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">,</span><span class="src-var">$params</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a279"></a>            <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a><span class="src-sym">-&gt;</span><a href="../myLiveShop/DB.html#methoddelete">delete</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$name">name</a><span class="src-sym">,</span><span class="src-var">$where</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a280"></a>                <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a281"></a>            <span class="src-sym">}</span></li>
<li><a name="a282"></a>            <span class="src-key">return </span><span class="src-id">true</span><span class="src-sym">;</span></li>
<li><a name="a283"></a>        <span class="src-sym">}</span></li>
<li><a name="a284"></a>        <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a285"></a>    <span class="src-sym">}</span></li>
<li><a name="a286"></a>    <span class="src-doc">/**</span></li>
<li><a name="a287"></a><span class="src-doc">     * Создаём условие where на основе id и params['where']</span></li>
<li><a name="a288"></a><span class="src-doc">     *</span></li>
<li><a name="a289"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc-var">$id </span><span class="src-doc">число или массив указывающий на id для перезаписи</span></li>
<li><a name="a290"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$params </span><span class="src-doc">дополнительные параметры</span></li>
<li><a name="a291"></a><span class="src-doc">     * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">готовое условие</span></li>
<li><a name="a292"></a><span class="src-doc">     */</span></li>
<li><a name="a293"></a>    <span class="src-key">private </span><span class="src-key">function </span><a href="../myLiveShop/Model.html#methodcreateWhere">createWhere</a><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">,</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a294"></a>        <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$id </span>|| isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'where'</span><span class="src-sym">]</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a295"></a>            <span class="src-var">$where</span>=<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a296"></a>            <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a297"></a>                <span class="src-comm">//проверяем количество ключевых полей</span></li>
<li><a name="a298"></a>                <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a><span class="src-sym">)</span>==<span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a299"></a>                    <span class="src-comm">//если одно поле то присваиваем всё к нему</span></li>
<li><a name="a300"></a>                    <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/is_array">is_array</a><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">))</span><span class="src-sym">{</span></li>
<li><a name="a301"></a>                        <span class="src-key">if</span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">[</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]]</span><span class="src-sym">))</span><span class="src-var">$id</span>=<span class="src-var">$id</span><span class="src-sym">[</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]]</span><span class="src-sym">;</span></li>
<li><a name="a302"></a>                        <span class="src-key">else </span><span class="src-var">$id</span>=<span class="src-var">$id</span><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a303"></a>                    <span class="src-sym">}</span></li>
<li><a name="a304"></a>                    <span class="src-var">$where</span><span class="src-sym">[</span><span class="src-sym">]</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodgetField">getField</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#methodfieldByName">fieldByName</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]</span><span class="src-sym">))</span><span class="src-sym">-&gt;</span><span class="src-id">fieldName</span><span class="src-sym">(</span><span class="src-sym">)</span>.<span class="src-str">'='</span>.<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a><span class="src-sym">-&gt;</span><a href="../myLiveShop/DB.html#methoderaseData">eraseData</a><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a305"></a>                <span class="src-sym">}</span><span class="src-key">else</span><span class="src-sym">{</span></li>
<li><a name="a306"></a>                    <span class="src-comm">//если много полей то ищем соответствия</span></li>
<li><a name="a307"></a>                    <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$id_field">id_field</a> <span class="src-key">as </span><span class="src-var">$value</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a308"></a>                        <span class="src-key">if</span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">[</span><span class="src-var">$value</span><span class="src-sym">]</span><span class="src-sym">))</span><span class="src-var">$where</span><span class="src-sym">[</span><span class="src-sym">]</span>=<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a><span class="src-sym">-&gt;</span><a href="../myLiveShop/DB.html#methodapostrof">apostrof</a><span class="src-sym">(</span><span class="src-var">$value</span><span class="src-sym">)</span>.<span class="src-str">'='</span>.<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../myLiveShop/Model.html#var$db">db</a><span class="src-sym">-&gt;</span><a href="../myLiveShop/DB.html#methoderaseData">eraseData</a><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">[</span><span class="src-var">$value</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a309"></a>                    <span class="src-sym">}</span></li>
<li><a name="a310"></a>                <span class="src-sym">}</span></li>
<li><a name="a311"></a>                <span class="src-var">$where</span>=<a href="http://www.php.net/implode">implode</a><span class="src-sym">(</span><span class="src-str">' AND '</span><span class="src-sym">,</span><span class="src-var">$where</span><span class="src-sym">)</span>.<span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'where'</span><span class="src-sym">]</span><span class="src-sym">)</span>?<span class="src-str">' AND '</span>.<span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'where'</span><span class="src-sym">]</span>:<span class="src-str">''</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a312"></a>            <span class="src-sym">}</span><span class="src-key">else</span><span class="src-sym">{</span></li>
<li><a name="a313"></a>                <span class="src-var">$where</span>=<span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'where'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a314"></a>            <span class="src-sym">}</span></li>
<li><a name="a315"></a>            <span class="src-key">return </span><span class="src-var">$where</span><span class="src-sym">;    </span></li>
<li><a name="a316"></a>        <span class="src-sym">}</span></li>
<li><a name="a317"></a>        <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a318"></a>    <span class="src-sym">}</span></li>
<li><a name="a319"></a><span class="src-sym">}</span></li>
</ol></pre>
</div>
	<p class="notes" id="credit">
		Документ создан Mon, 14 Feb 2011 01:08:53 +0200 в <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
	</p>
	</body>
</html>